/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package org.futco.sysconthos.Modelo.Admisiones.Daos;

import org.futco.sysconthos.Modelo.Procesos.Daos.EspecialidadDAO;
import org.futco.sysconthos.Modelo.Procesos.Daos.CitaDAO;
import org.futco.sysconthos.Modelo.Procesos.Daos.EspecialidadMedicoDAO;
import org.futco.sysconthos.Modelo.Procesos.Daos.HistoriaClinicaDAO;
import org.futco.sysconthos.Modelo.Procesos.Daos.HorarioDAO;
import org.futco.sysconthos.Modelo.Procesos.Daos.MedicoHorarioDAO;
import org.futco.sysconthos.Modelo.Procesos.Daos.TurnoDAO;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;


/**
 *
 * @author Sala4
 */
public class Model {

   private Connection con;
    private String jdbcDriver;
    private String jdbcUser;
    private String jdbcPassword;
    private String jdbcDataBaseURL;
    private static Model model;

 

    private Model() throws SQLException {
  
        try {
            jdbcDataBaseURL="jdbc:mysql://localhost:3306/siscohico";
            jdbcDriver="com.mysql.jdbc.Driver";
            jdbcUser="root";
            jdbcPassword="";


        } catch (Exception ex) {
            ex.printStackTrace();
            throw new SQLException("Error, imposible conectarse a la base de datos, por favor verifique los parámetros de conexión....!");
        }
    }

    public void conectar() throws SQLException {
        if (con == null || con.isClosed()) {
            if (jdbcDriver == null) {
                throw new SQLException("Error, no hay Driver de Conexión...!");
            }
            if (jdbcDataBaseURL == null) {
                throw new SQLException("Error, no ha especificado la URL del Servidor de BD...!");
            }


            try {
                Class.forName(jdbcDriver);
            } catch (ClassNotFoundException ex) {
                ex.printStackTrace();
                throw new SQLException("Error, no fue posible cargar el Driver de conexión...!");
            }

            con = DriverManager.getConnection(jdbcDataBaseURL, jdbcUser, jdbcPassword);
            System.out.println("Conectado...");
        }
    }

    public static Model getInstance() throws SQLException {
        if (model == null) {
            model = new Model();
        }
        if(!model.isConnect()){
            model.conectar();
        }

        return model;
    }

    public boolean isConnect() throws SQLException {
        return con != null && !con.isClosed();
    }

    public Connection getCon() {
        return con;
    }

    public static PacienteDAO getPacienteDAO() throws SQLException {
        PacienteDAO dao = new PacienteDAO();

        return dao;
    }
  


    public static MedicoDAO getMedicoDAO() throws SQLException {
        MedicoDAO dao = new MedicoDAO();

        return dao;
    }
    public static EspecialidadDAO getEspecialidadDAO() throws SQLException {
        EspecialidadDAO dao = new EspecialidadDAO();

        return dao;
    }
    public static  CitaDAO getCitaMedicaDAO() throws SQLException{
    CitaDAO dao=new CitaDAO();
    return dao;
    }


      public static HistoriaClinicaDAO getHistoriaClinicaDAO() throws SQLException {
        HistoriaClinicaDAO dao = new HistoriaClinicaDAO();

        return dao;
    }

        public static EspecialidadMedicoDAO getEspecialidadMedicoDAO() throws SQLException {
        EspecialidadMedicoDAO dao = new EspecialidadMedicoDAO();

        return dao;
    }

        public static TurnoDAO getTurnoDAO() throws SQLException {
        TurnoDAO dao = new TurnoDAO();
        return dao;
    }
         public static HorarioDAO getHorarioDAO() throws SQLException {
        HorarioDAO dao = new HorarioDAO();

        return dao;
    }
        public static MedicoHorarioDAO getmedicoHorarioDAO() throws SQLException {
        MedicoHorarioDAO dao = new MedicoHorarioDAO();

        return dao;
    }
      public static UsuarioDAO getUsuarioDAO() throws SQLException {
       UsuarioDAO dao = new UsuarioDAO();

        return dao;
    }



}
 
